﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc.Html;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Web.Routing;

namespace Dinamico.Service
{
    public static class Const
    {
        public static class TempData
        {
            public const string Notice = "Notice";
        }

        public static class Article
        {
            /// <summary>
            /// ViewData Key for <see cref="Shop.Models.CategoryModel"/> object.
            /// </summary>
            public const string ROUTE_CATEGORY = "categoryModel";

            /// <summary>
            /// "~/Content/ArticleImages"
            /// </summary>
            public const string ARTICLE_IMAGE_FOLDER = "~/Content/ArticleImages";

            /// <summary>
            /// Used in Article list in Price field, because cannot find any other place where it is defined...
            /// </summary>
            public const string EUR_TEXT = "EUR";

            public const string EUR_SIGN = "€";

            /// <summary>
            /// ARTICLES LIST PAGE SIZE.
            /// </summary>
            public const int ARTICLES_LIST_PAGE_SIZE = 10;
                      
            /// <summary>
            /// Return the JS PriceListObj name by input <paramref name="articleID"/>.
            /// </summary>
            /// <param name="articleID">Article ID.</param>
            /// <returns>Js PriceListObj name.</returns>
            public static string GetJsPriceListObjNameByArticleID(int articleID)
            {
                return String.Format("PriceList_for_{0}", articleID);
            }
        }

        public static class Basket
        {
            /// <summary>
            /// Id of the User Basket control with short information.
            /// </summary>
            public const string USER_BASKET_INFO_CONTROL_ID = "UserBasketControl";
            public const string USER_BASKET_LIST = USER_BASKET_INFO_CONTROL_ID+ "List";
            public const string USER_BASKET_ARTICLE = USER_BASKET_INFO_CONTROL_ID+ "Article";
            public const string USER_BASKET_PRICE = USER_BASKET_INFO_CONTROL_ID + "Price";

            private const string BIG = "BIG";
            public const string USER_BASKET_LIST_BIG = USER_BASKET_LIST+BIG;
            public const string USER_BASKET_ARTICLE_BIG = USER_BASKET_ARTICLE + BIG;
            public const string USER_BASKET_PRICE_BIG = USER_BASKET_PRICE + BIG;

            public const string USER_BASKET_DROP_DOWN_ID = "USER_BASKET_DROP_DOWN_ID";

            public const string USER_BASKET_ORDER_ID = "USER_BASKET_ORDER_ID";

            public const string Captcha = "fotel-krzeslo";
        }

        public static class Session
        {
            /// <summary>
            /// User Basket Session Key.
            /// </summary>
            public const string BasketSessionKey = "UserBasket";

            /// <summary>
            /// User Order Session Key
            /// </summary>
            public const string UserOrderSessionKey = "UserOrder";
            /// <summary>
            /// User Basket Session Article Id Key.
            /// </summary>
            public const string BasketArticleIDKey = "ArticleBasketIndex";

            /// <summary>
            /// Selected Category Session Key.
            /// </summary>
            public const string CategorySessionKey = "Category_SessionKey";

        }

        public static class Route
        {
            public const string Article_Category = "Article_Category";
            public const string Article_Category_Json = "Article_Category_Json";
            public const string Article_Version_Json = "Article_Version_Json"; 
            /// <summary>
            /// "category"
            /// </summary>
            public const string CategoryRouteDataKey = "category";
            /// <summary>
            /// "Articles/{category}/{page}"
            /// </summary>
            public const string Article_List = "Article_List";
            /// <summary>
            /// "Article/{category}/{encodedName}"
            /// </summary>
            public const string Article_Details = "Article_Details";
            /// <summary>
            /// CategoryListSelectedItem/{category}
            /// </summary>
            public const string CategoryListSelectedItem = "CategoryListSelectedItem";
            /// <summary>
            /// CategoryTreeSelectedItem/{category}
            /// </summary>
            public const string CategoryTreeSelectedItem = "CategoryTreeSelectedItem";

            /// <summary>
            /// "PageTitleByCategory"
            /// </summary>
            public const string Article_PageTitleByCategory = "Article_PageTitleByCategory";

            /// <summary>
            /// "AddToBasket"
            /// </summary>
            public const string Article_AddToBasket = "Article_AddToBasket";

            /// <summary>
            /// "AddAllIntoBasket"
            /// </summary>
            public const string Article_AddAllIntoBasket = "Article_AddAllIntoBasket";

            /// <summary>
            /// "AddToBasketNoScript"
            /// </summary>
            public const string Article_AddToBasketNoScript = "Article_AddToBasketNoScript";
            /// <summary>
            /// "RemoveFromBasket"
            /// </summary>
            public const string RemoveFromBasket = "RemoveFromBasket";


            /// <summary>
            /// "RemoveAllFromBasket"
            /// </summary>
            public const string Remove_All_From_Basket = "RemoveAllFromBasket";
            /// <summary>
            /// "UpdateBasket"
            /// </summary>
            public const string Update_Basket ="UpdateBasket";
            /// <summary>
            /// "RememberArticle"
            /// </summary>
            public const string Article_Remember = "Article_RememberArticle";

            /// <summary>
            /// "GetUserBasketContent"
            /// </summary>
            public const string Basket_GetUserBasketContent = "Basket_GetUserBasketContent";

            /// <summary>
            /// "GetUserBasketJsonContent"
            /// </summary>
            public const string Basket_GetUserBasketJsonContent = "Basket_GetUserBasketJsonContent";

            /// <summary>
            /// "VatAndDeliveryText"
            /// </summary>
            public const string Basket_VatAndDeliveryText = "Basket_VatAndDeliveryText";

            public const string Basket_ConfirmOrder = "Basket_ConfirmOrder";

            /// <summary>
            /// Customer Address List
            /// </summary>
            public const string Customer_Address_List= "DeliveryAddressList";

            /// <summary>
            /// Customer main Panel
            /// </summary>
            public const string Customer_Panel = "Dashboard";

            /// <summary>
            /// Customer Short Address Edit
            /// </summary>
            public const string Customer_Short_Address_Edit = "DeliveryAddressEdit";

            /// <summary>
            /// Page that is asking if user is sure if he wants to delete address
            /// </summary>
            public const string Customer_Short_Address_Delete_Confirm = "DeliveryAddressDeleteConfirm";

            /// <summary>
            // Action that deletes address
            /// </summary>
            public const string Customer_Short_Address_Delete = "DeliveryAddressDelete";
            /// <summary>
            /// Adding address to Customer
            /// </summary>
            public const string Customer_Short_Address_Add = "DeliveryAddressAdd";

            public const string Category_List = "CategoryList";

            public const string Customer_Address = "MainAddress";

            public const string Basket_List = "BasketList";

            public const string Order_Create = "CreateOrder";

            public const string Payments = "Payments";
            //GetBankName
            public const string Order_GetBankName = "GetBankName";

            /// <summary>
            /// User Order Delivery Date Edit
            /// </summary>
            public const string Order_DeliveryDateEdit = "OrderDeliveryDateEdit";
            /// <summary>
            /// User Shipment Method Edit
            /// </summary>
            public const string Order_ShipmentMethodEdit = "ShipmentMethodEdit";
            /// <summary>
            /// Edit of main address for order.
            /// </summary>
            public const string Order_MainAddress = "OrderMainAddress";
            /// <summary>
            /// Order page.
            /// </summary>
            public const string Order = "Order";
            /// <summary>
            /// Order summary page.
            /// </summary>
            public const string OrderSummary = "OrderSummary";
            /// <summary>
            /// Delivery address for order.
            /// </summary>
            public const string Order_DevliveryAddress = "OrderDeliveryAddress";
            /// <summary>
            /// Edit Delivery address for order.
            /// </summary>
            public const string Order_DevliveryAddressEdit = "OrderDeliveryAddressEdit";

            /// <summary>
            /// Default page.
            /// </summary>
            public const string Default = "Default";            
        }

        public static class Cms
        {
            public const string Node_All_Article = "Node_All_Article";
            public const string Root_First_Child = "Languages";
        }
    }
}